package xml;

import org.w3c.dom.Node;

import bean.vo.ItemCotizacionVO;
import bean.vo.ProductoVO;

public class SerializadorItemCotizacion {

	public static Node serializar(Node nodoPadre, ItemCotizacionVO item) throws Exception{
		Node nodoItem = null;
		
		if (nodoPadre == null) {
			nodoItem = XmlUtil.createRootNode(Constantes.ITEM);
		} else {
			nodoItem = XmlUtil.addChild(nodoPadre, Constantes.ITEM, null);
		}
		XmlUtil.addAttribute(nodoItem, Constantes.SERIE, item.getProducto().getRodamiento().getCodigo());
		XmlUtil.addAttribute(nodoItem, Constantes.SUFIJO, item.getProducto().getRodamiento().getSufijo());
		
		XmlUtil.addChild(nodoItem, Constantes.MARCA, item.getProducto().getFabricante().getNombre());
		XmlUtil.addChild(nodoItem, Constantes.ORIGEN, item.getProducto().getOrigen().getNombre());
		XmlUtil.addChild(nodoItem, Constantes.CANTIDAD, item.getCantidadCotizada());
		float descuento = item.getDescuento() != null ? item.getDescuento().getPorcentajeDescuento() / 100 : 0;
		XmlUtil.addChild(nodoItem, Constantes.PRECIO, item.getPrecio() - item.getPrecio() * descuento);
		
		return nodoItem;
	}
	
	public static ItemCotizacionVO deserializar(Node nodoItem) throws Exception {
		if (nodoItem.getNodeName() != Constantes.ITEM) {
			throw new Exception("Error - nodo item de cotizacion invalido");
		}
		
		ProductoVO producto = SerializadorProducto.deserializar(nodoItem);
		ItemCotizacionVO item = new ItemCotizacionVO();
		item.setProducto(producto);
		
		String cantidad = XmlUtil.getChildNodeValueWithName(nodoItem, Constantes.CANTIDAD);
		item.setCantidadCotizada(Integer.parseInt(cantidad));
		
		return item;
	}
}
